-- 基础设置
vim.cmd([[

set number
set ts=4
set shiftwidth=4
set autoindent
set cindent

]])

-- 按键映射
function map(mode, shortcut, command)
	vim.api.nvim_set_keymap(mode, shortcut, command, {noremap=true, silent=true})
end

map("i", "jk", "<Esc>")
map("n", "H", "^")
map("n", "L", "g_")
map("n", "<c-h>", "ddkP")
map("n", "<c-l>", "ddp")



-- utf8
-- vim.o.encoding = "UTF-8"
-- vim.o.fileencoding = "utf-8"

-- jku移动时上下保留8行
vim.o.scrolloff = 8
vim.o.sidescrolloff = 8

-- 使用相对行
vim.wo.number = true
vim.wo.relativenumber = true

-- 高亮所在行
vim.wo.cursorline = true

-- 显示左侧图标指示列
-- vim.wo.signcolumn = "yes"

-- 右侧参行线，超过表示代码太长，考虑换行
-- vim.wo.colorcolume

-- 缩进两个空格等于一个tab
-- vim.o.tabstop = 2
-- vim.bo.tabstop = 2
-- vim.o.softtabstop = 2
-- vim.o.shiftround = true

-- >> << 移动长度
-- vim.o.shiftwidth = 2
-- vim.bo.shiftwifth = 2

-- 新行对其当前行，空格替代tab
-- vim.o.expandtab = true
-- vim.bo.expandtab = true
-- vim.o.autoindent = true
-- vim.bo.autoindent = true
-- vim.o.smartindet = true

-- 搜索大小写不敏感，除非包含大写
vim.o.ignorecase = true
vim.o.smartcase = true

-- 搜索高亮
vim.o.hlsearch = true

-- 边输入边搜索
vim.o.incsearch = true

-- 使用增强状态栏后不需要vim模式提示
vim.o.showmode = false

-- 命令行高为2，提供足够的显示空间
vim.o.cmdheight = 2

-- 当文件被外部修改时，自动加载
vim.o.autoread = true
vim.bo.autoread = true

-- 禁止折行
vim.o.wrap = false
vim.wo.wrap = false

-- 行结尾可以跳到下一行
vim.o.whichwrap = 'b,s,<,>,[,],h,l'

-- 允许隐藏被修改的buffer
vim.o.hidden = true

-- 鼠标支持
vim.o.mouse = "a"

-- 禁止创建备份文件
-- vim.o.backup = false
-- vim.o.writebackup = false
-- vim.o.swapfile = false

-- smaller updatetime
vim.o.updatetime = 300

-- 等待mappings
vim.o.timeoutlen = 100

-- split window 从下边和右边出现
vim.o.splitbelow = true
vim.o.splitright = true

-- 自动补全不自动选中
vim.g.completeopt = "menu,menuone,noselect,noinsert"

-- 样式
vim.o.background = "dark"
vim.o.termguicolors = true
vim.opt.termguicolors = true

-- 不可见字符显示，这里只把空格显示为一个点
-- vim.o.list = true
-- vim.o.listchars = "space:."

-- 补全增强
vim.o.wildmenu = true

-- Dont' pass messages to |ins-completion menu|
vim.o.shortmess = vim.o.shortmess .. 'c'
vim.o.pumheight = 10

-- always show tabline
-- vim.o.showtabline = 2
